home *** CD-ROM | disk | FTP | other *** search
- API Details
-
- In order for you to get a feel for the power built-in to each and every
- DESQview, we've included a short description about each API command.
-
- The DESQview 2.2 API is an objected-oriented interface. The data structures
- DESQview uses to represent windows, mailboxes, etc. are called "objects".
- A call to the API involves "sending a message" to an object, indicating
- which of several operations you want performed on that data structure.
- This is referred to as the "send interface". Almost the entire API
- consists of sending one of 34 messages to one of 7 different object types.
-
- The DESQview 2.2 API also has a non-object-oriented interface called
- the "direct call interface". This is the small subset of API functions
- that are not, by nature, object oriented or that are convenient alternatives
- to the send interface.
-
- The DESQview 2.2 API has a concise way of encoding a complete description
- of a window so that a single call to the API can create the window,
- fill it with the desired information, size and position it on the
- display, and define fields that interact with the user. All this is
- done using "Window Streams".
-
- So that you can interrogate a window for its current contents, position,
- etc., the DESQview 2.2 API also has "Query Streams". In fact, any
- window parameter that can be set by a Window Stream can be read by
- a Query Stream.
-
- DESQview calls the portion of itself that interfaces with the user
- the "Window Manager". Each time a user presses the DESQ key (normally
- the Alt key) and makes a menu selection, it is the Window Manager
- that opens, switches, rearranges and closes windows, transfers data,
- displays help, or quits DESQview. In order for an application to have
- the same power as the user, the DESQview 2.2 API has "Manager Streams".
- Manager Streams enable an application to interact with the Window
- Manager.
-
- Using Manager Streams an application can, for example, ask the Window
- Manager to make one of its windows the topmost window in the system,
- disallow any resizing of the window by the user, and even notify
- the application if the user tries to close the window. Using Manager
- Streams an application can disallow use of the DESQview menu and DESQview
- submenus.
-
- But, there's still even more to the DESQview 2.2 API. DESQview provides
- a comprehensive set of functions for simplifying the job of interfacing
- with the user. Instead of dealing with user input a single character
- at a time, your application can present entire menus, dialogue boxes,
- help screens to DESQview and get back the resulting user input. Common
- functions such as cursor control, insertion and deletion of characters,
- tracking the mouse, and selection from option lists are performed
- by DESQview. DESQview performs these functions under control of a
- data structure called the "Field Table".
-
- Information about a window's size, position, contents and Field Table
- can be combined together into "Panels". Panels can be stored on disk
- or in memory for later display. Panels can be constructed manually
- or via the DESQview API Panel Design Tool.
-
-
- DESQview 2.2 API Commands:
-
- Send Interface Commands
-
- WINDOW Objects
-
- ADDTO write characters &attributes to a window
- AT position the logical cursor
- EOF return TRUE if cursor is past end window
- ERASE clear a window
- FREE close and free a window or a task
- HANDLE return handle of current task's window
- LEN return # characters/line in logical window
- NEW create a new window or task
- OPEN fill a window with a given character
- READ read the next logical line from a window
- READN read the next n characters/attributes
- REDRAW redraw a window
- SIZEOF return total # characters/logical window
- SUBFROM write attributes to a window
- WRITE write characters and/or command streams
-
-
- KEYBOARD Objects
-
- ADDTO set keyboard control flags
- CLOSE close a keyboard object
- ERASE discard all input queued to Keyboard
- FREE free a Keyboard object
- GETFLAGS get keyboard control flags
- GETPRI get objectq priority level of keyboard
- HANDLE return handle of task's default keybd
- NEW create a new Keyboard object
- OPEN attach a Keyboard to a window
- READ get the next input from the Keyboard
- SETESC intercept keystrokes to input fields
- SETFLAGS replace keyboard control flags
- SETPRI set objectq priority level of keyboard
- SIZEOF return # of input buffers queued
- STATUS get the scan code for the last key read
- SUBFROM clear keyboard control flags
- WRITE add input buffer to Keyboard queue
-
-
- MAILBOX Objects
-
- ADDR return tender of the last message READ
- ADDTO send a message and status by value
- CLOSE close a Mailbox
- ERASE discard all queued messages
- FREE frees a Mailbox
- GETFLAGS get mailbox control flags
- GETPRI get objectq priority level of mailbox
- HANDLE return handle of task's default mailbox
- LOCK request exclusive access to a resource
- NEW create a new Mailbox
- OPEN open a Mailbox for input
- READ get the next message from the queue
- SETFLAGS replace mailbox control flags
- SETPRI set objectq priority level of mailbox
- SETNAME assign a name to a Mailbox
- SIZEOF return the # of messages in the queue
- STATUS return status of the last message READ
- SUBFROM send a message &status by reference
- WRITE send a message by value with status=0
-
-
- OBJECTQ Objects
-
- CLOSE Close an Objectq
- ERASE remove all objects from the queue
- HANDLE return the handle of a task's Objectq
- OPEN open the Objectq
- READ wait for input from any open object
- SIZEOF return the number of objects queued
- STATUS return whether or not Objectq is open
- SUBFROM remove specific object from queue
- WRITE add an object to the Objectq
-
-
- PANEL Objects
-
- APPLY display a particular panel
- CLOSE close a panel object
- DIR return a pointer to the panel directory
- FREE free a panel object
- NEW create a panel object
- OPEN associate panel object with a panel file
- SIZEOF return the # of panels in a panel file
- STATUS verify success of an OPEN or APPLY
-
-
- POINTER Objects
-
- ADDTO set pointer control flags
- CLOSE stop taking pointer input
- ERASE discard all pointer messages
- FREE free a Pointer object
- GETFLAGS get pointer control flags
- GETPRI get objectq priority level of pointer
- GETSCALE return the current scaling factors
- NEW create a new Pointer object
- OPEN start taking Pointer input for window
- READ wait for the next pointer message
- SETFLAGS replace pointer control flags
- SETPRI set objectq priority level of pointer
- SETSCALE set the current scaling factors
- SIZEOF return the number of messages queued
- STATUS return the status of the last message
- SUBFROM reset pointer control flags
- WRITE move the pointer to a specified position
-
-
- TIMER Objects
-
- ADDTO start a timer for a specified interval
- CLOSE close a Timer object
- ERASE cancel the current timer interval
- FREE free a Timer object
- GETPRI get objectq priority level of timer
- LEN return time remaining before expiration
- NEW create a new Timer object
- OPEN open a Timer object
- READ wait for the current timer to expire
- SETPRI set objectq priority level of timer
- SIZEOF return elapsed time since timer started
- STATUS return the status of the Timer object
- WRITE start a timer to end at a specified time
-
-
- Direct Call Interface Commands
-
- APILEVEL define minimum API level required
- APPNUM get the current application's number
- ASSERTMAP get current mapping context and set new one
- BEGINC begin critical region
- CSTYLE use C language style control codes
- DBGPOKE poke debug information onto display
- DISPEROR display an error message window
- DVPRESENT determine if DESQview is present
- ENDC end critical region
- FINDMAIL find a mailbox by name
- FREEBIT undefine second-level interrupt handler
- GETBIT define a second-level interrupt handler
- GETBUF get address of a Logical Window Buffer
- GETCRIT get critical region nesting level
- GETERROR get error handling level of current task
- GETMEM allocate buffer from System Memory
- ISOBJ determine if a handle is valid
- JUSTIFY turn off/on automatic justification
- KMOUSE control the keyboard mouse
- LOCATE find window at given screen location
- NEWPROC start a new process
- OBJTYPE determine the object type of a given handle
- OSTACK switch to task's internal stack
- PAUSE relinquish control to other tasks
- PGMINT interrupt another task
- POSTTASK awaken task by posting its Objectq
- POSWIN position a window on the display
- PRINTC display a character in a window
- PUSHKEY push key into keyboard input stream
- PUTMEM free a buffer allocated by GETMEM
- SETBIT schedule a second-level interrupt handler
- SETERROR set error handling level of current task
- SHADOW get window buffer and start shadowing
- SOUND make a sound
- START start a task that was previously stopped
- STOP stop a task until START is called
- UPDATE update a portion of a window
- USTACK switch off task's internal stack
-
-
- Window Stream Commands
-
- 00 to 9F print strings (attributes,characters,blanks) to window
- A0 to CF change size/ position of a window
- D0 to DF set options for appearance of window:
- frames, color, show/hide window, display of control characters
- E0 to EF perform immediate actions:
- clearing, scrolling, recoloring, redrawing window;
- create new windows &repeat command sequences
- F0 to FF define, read, write fields within window.
-
-
- Query Stream Commands
-
- same as Window Stream commands
-
-
- Manager Streams
-
- 00 to 3F Allows specific DESQview commands:
- move & resize window, scroll data, hide, rearrange program,
- suspend application, display DESQview menu
- 40 to 71 notify application on specific DESQview commands.
- 84 to 8B specify environment of window:
- suspend application when it is in background,
- set application's asynchronous notification.
- AC to BF enable/disable DESQview extensions.
- C0 to FF reorder, hide, unhide, suspend resume
- applications.